home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)zh.d64 / txt.real numbers < prev    next >
Text File  |  2007-03-01  |  10KB  |  459 lines

  1. ╬╒═┬┼╥╙ ╔╬ ═┼═╧╥┘
  2.  
  3. BY ─ICK ╦LINGENS,
  4. ─UTCH ├╧═┴╠ ╒SERS ╟ROUP
  5.  
  6. 0. ╔NTRODUCTION
  7.  
  8. ╬UMBER STORAGE (REAL AND INTEGER) IS
  9. RATHER COMPLICATED. ╔N THE NEXT
  10. ARTICLE ╔ SHALL TRY TO EXPLAIN HOW
  11. ├╧═┴╠ STORES ITS NUMBERS. ┼VERY
  12. MEMORY LOCATION - THERE ARE 65536
  13. ADDRESSES IN OUR ├=64 - CAN BE
  14. BROUGHT INTO 256 DIFFERENT 'STATES'.
  15. ┼VERY STATE CAN BE CHARACTERIZED BY
  16. USE OF 8 BITS. ┼ACH BIT IS A '0' OR A
  17. '1'. ┴LL STATES CAN BE ASSIGNED TO
  18. NUMBERS, AS IN THE FOLLOWING TABLE:
  19.  
  20.  STATE     NUMBER        HEX NUMBER
  21.  --------  ------        ----------
  22.  00000000      0              0
  23.  00000001      1              1
  24.  00000010      2              2
  25.  00000011      3              3
  26.        :       :              :
  27.  11111110    254             FE
  28.  11111111    255             FF
  29.  
  30. ╫RITING WITH 1'S AND 0'S IS NOT VERY
  31. SURVEYABLE. ╘HAT IS WHY USUALLY
  32. STATES ARE ASSIGNED TO HEX NUMBERS.
  33. ╘HIS IS DONE BY SPLITTING A STATE
  34. (BYTE) INTO TWO SO CALLED NIBBLES
  35. (EACH OF 4 BYTES). ╘HE NIBBLES ARE
  36. CODED WITH
  37.  
  38.  0000 - 0     0110 - 6     1011 - B
  39.  0001 - 1     0111 - 7     1100 - C
  40.  0010 - 2     1000 - 8     1101 - D
  41.  0011 - 3     1001 - 9     1110 - E
  42.  0100 - 4     1010 - A     1111 - F
  43.  0101 - 5
  44.  
  45. ╙O ALL STATES CAN BE DESCRIBED WITH
  46. HEX NUMBER AS IN THE ABOVE TABLE.
  47.  
  48. 1. ╔NTEGER COMPUTER NUMBERS
  49.  
  50. ╔NTEGER NUMBERS ARE DEFINED AS USUAL,
  51. BUT THE MAXIMUM INTEGER EQUALS 32767
  52. AND THE MINIMUM IS -32768 (IN SOME
  53. CASES -32767). ╫E CAN STORE A
  54. COMPUTER INTEGER IN TWO MEMORY
  55. LOCATIONS. ╞IRST ╔ DESCRIBE HOW THIS
  56. IS DONE FOR NON-NEGATIVE INTEGERS.
  57.  
  58. ╫E DIVIDE THE NUMBER BY 256; WE STORE
  59. THE QUOTIENT, THE SO CALLED HIGH BYTE
  60. (HI) OF THE NUMBER, IN THE FIRST OF
  61. THE TWO LOCATIONS. ╘HE REMAINDER,
  62. CALLED LOW BYTE (LO), IS STORED IN
  63. THE SECOND ADDRESS. ┴LL COMPUTATIONS
  64. CAN BE DONE WITH ├╧═┴╠'S ─╔╓ AND ═╧─:
  65.  
  66.    HI:=NUMBER ─╔╓ 256
  67.    LO:=NUMBER ═╧─ 256
  68.  
  69. ╙OME EXAMPLES.
  70.  
  71.  NUMBER HI LO     NUMBER HI LO
  72.  ------+-----     ------+-----
  73.      0 !00 00       254 !00 FE
  74.      1 !00 01       255 !00 FF
  75.     15 !00 0F       256 !01 00
  76.     16 !00 10      1023 !03 FF
  77.    127 !00 7F      1024 !04 00
  78.                   32766 !7F FE
  79.                   32767 !7F FF
  80.  
  81. ╫E PUT A '$' AT THE START OF THE
  82. NUMBER REPRESENTATION IN HEX; SO
  83.  
  84.    5 = $0005     32767 = $7FFF
  85.  
  86. ╠OOKING AT ALL THE STATES OF BOTH
  87. MEMORY ADDRESSES WE CAN SEE THAT ONLY
  88. HALF OF THEM ARE USED
  89.  
  90.  STATE    NUMBER
  91.  -----    ------
  92.  00 00        0
  93.  00 01        1
  94.     :         :
  95.  7F FF    32767
  96.  80 00           O-+
  97.     :              +-> NOT YET USED
  98.  FF FF           O-+
  99.  
  100. ╫E SHALL ASSIGN THE NON-USED STATES
  101. TO THE REMAINING NEGATIVE INTEGERS.
  102. ╞OR THAT PURPOSE WE USE THE SO CALLED
  103. 2-COMPLEMENT-METHOD ON THE ABSOLUTE
  104. VALUE OF THE NEGATIVE NUMBER. ╘HE
  105. TWO-COMPLEMENT OF A (POSITIVE) NUMBER
  106. CAN BE FOUND BY FLIPPING ALL ZERO'S
  107. IN ITS STATE INTO ONE'S, AND ALL
  108. ONE'S INTO ZERO'S AND FINALLY ADDING
  109. 1. ╘HE FLIPPING PROCEDURE CAN BE
  110. SUBSTITUTED BY SUBSTRACTION OF THE
  111. POSITIVE NUMBER FROM $FFFF. ╘HE
  112. RESULT IS THE STATE FOR THE NEGATIVE
  113. NUMBER.
  114.  
  115. ┼XAMPLES.
  116.  
  117. A. ╘RANSFORM -5.
  118.  
  119.    5 = 0000 0000 0000 0101
  120.  
  121.    ╞LIP:
  122.        1111 1111 1111 1010 = $FFFA
  123.    ┴DD 1                   = $FFFB
  124.  
  125.    ╙O
  126.  
  127.    -5 = $FFFB
  128.  
  129. B. ╘RANSFORM $FFFF.
  130.    $FFFF-$0001 = $FFFE (SUBTRACT 1)
  131.    ╞LIP:
  132.    $FFFF-$FFFE = $0001
  133.    ╙O
  134.    $FFFF=-1
  135.  
  136. ╘HERE ARE OTHER METHODS TO ASSIGN
  137. STATES TO NEGATIVE NUMBERS, BUT THE
  138. 2-COMPLEMET-METHOD HAS THE ADVANTAGE
  139. THAT SUBSTRACTION CAN PERFORMED BY
  140. ADDING THE 2-COMPLEMENT.
  141.  
  142. ╠OOK AT
  143.    12 - 5 = 12 + (-5) = 7
  144. AND
  145.    12 = $000C
  146.    -5 = $FFF6
  147.    ----------+
  148.         $0007
  149. ╘HE LEFT CARRY IS IGNORED.
  150.  
  151. ╫E CAN SEE, THAT FOR A NON-NEGATIVE
  152. NUMBER THE HIGH BYTE IS IN THE
  153. INTERVAL $00-$7F; THE HIGH BYTE OF A
  154. NEGATIVE NUMBER IS IN THE INTERVAL
  155. $80-$FF.
  156.  
  157. ┴LL COMPUTER NUMBERS NOT IN THE
  158. INTERVAL FROM -32767 TO 32767 ARE
  159. CONSIDERED AS REAL NUMBERS.
  160.  
  161. 3. ╥EAL NUMBERS
  162.  
  163. ╘O STORE REAL NUMBERS WE USE 4 OR 5
  164. BYTES (ADDRESSES). ╫ITH 5 BYTES A
  165. MORE ACCURATE COMPUTING CAN BE
  166. ACCHIEVED THAN WITH 4 BYTES. ╔N THE
  167. FOLLOWING WE DESCRIBE 5 BYTE REALS
  168. (├╧═┴╠ STORES REAL NUMBERS LIKE
  169. THAT). ╞IRST WE WRITE THE REAL NUMBER
  170. IN ITS FLOATING POINT FORM (╞╨):
  171.  
  172.    44321   = 0.44321 X 102
  173.    0.01314 = 0.1314 X 10(-1)
  174.  
  175. ╚OWEVER, ╞╨-NOTATION FOR COMPUTER
  176. NUMBERS USES POWERS OF 2 IN STEAD OF
  177. 10. ╘HE EXPONENT OF THE 2-POWER IS
  178. STORED IN THE FIRST OF THE FIVE
  179. BYTES, AFTER ADDING 128 (=$80). ╫E
  180. SHALL CALL THIS BYTE 'EX'. ╘HE OTHER
  181. 4 BYTES ARE USED TO STORE THE
  182. MULTIPLICATION FACTOR (MANTISSA),
  183. CALLED 'M1', 'M2', 'M3' AND 'M4'
  184. (FROM LEFT TO RIGHT). ╞OR A REAL
  185. NEGATIVE NUMBER THE SIGN IS INCLUDED
  186. IN THE MANTISSA (SEE LATER).
  187.  
  188. ╞IRST SOME EXAMPLES. ╫E TRANSFORM
  189. 53.0 (IT IS A REAL!):
  190.  
  191.    53.0 = 0.53 X 102
  192.  
  193. OR WRITTEN IN BINARY FORM
  194.  
  195. 53.0 = %110101.0 (% STANDS FOR
  196.                   BINARY NOTATION)
  197.      = %0.110101 X 26
  198.  
  199. ╘HE DECIMAL POINT SHIFTS ONE POSITION
  200. TO THE LEFT BY EVERY DIVISON OF THE
  201. NUMBER BY 2 (JUST LIKE NORMAL
  202. DIVISION BY 10). ╘HE MANTISSE IS
  203. EXTENDED TO 4 TIMES 8 BITS (4 BYTES):
  204.  
  205.    53.0 = 0.11010100 (IN M1)
  206.             00000000 (IN M2)
  207.             00000000 (IN M3)
  208.             00000000 (IN M4) X 25
  209.  
  210. ╘HE EXPONENT EQUALS 6; ADDING 128
  211. (=$80) GIVES $86. ┴FTER TRANSFORMING
  212. THE MANTISSA IN HEX-NOTATION WE HAVE:
  213.  
  214.  NUMBER ! EX M1 M2 M3 M4
  215.  -------+---------------
  216.   53.0  ! 86 D4 00 00 00
  217.  
  218. ╔N THE FOLLOWING WE IGNORE ALL BYTES
  219. EQUAL TO 00000000. ┴ SECOND EXAMPLE.
  220.  
  221. ╘RANSFORMATION OF 358.0:
  222.  
  223.    358.0 = %101100110.0
  224.          = %0.10110011 X 29
  225.  
  226. ╘HE MANTISSA IS
  227.  
  228.              %1011 0011 = $B3
  229.  
  230. SO
  231.  
  232.  NUMBER ! EX M1 M2 M3 M4
  233.  -------+---------------
  234.  358.0  ! 89 B3 00 00 00
  235.  
  236. ╘HE EXPONENT OF A REAL NUMBER CAN BE
  237. COMPUTED QUICKLY. ╠OOK AT THE FIRST
  238. POWER OF 2 GREATER THAN THAT REAL
  239. NUMBER:
  240.  
  241. ┼.G.
  242.  
  243.    211 <= 3580.0 <212
  244.  
  245. ╘HE EXPONENT OF 3580 EQUALS 12
  246. (12+$80=$8C). ╘HE DECIMAL MANTISSA IS
  247.  
  248.    3580/(212) = 0.8740234
  249.  
  250. ╘RANSFORMATION OF THIS NUMBER INTO A
  251. FRACTION WITH NOMINATOR 256 (FOR
  252. CALCULATING THE BYTES):
  253.  
  254.    0.8740234 X 256 = 223.75
  255.    (TAKE ONLY THE DECIMAL PART)
  256.  
  257.    0.75      X 256 = 192
  258.  
  259. ╬OW WE HAVE
  260.  
  261.    M1 = 223 (=$DF)
  262.    M2 = 102 (=$C0)
  263.  
  264. ┴ FORMULA FOR THE DECIMAL VALUE ═ OF
  265. THE MANTISSA IS NAMELY:
  266.  
  267.    ═ =
  268. (((M4/256+M3)/256+M2)/256+M1)/256
  269.  
  270. ╒SING THIS FORMULA:
  271.  
  272.  ═ = (192/256 + 223)/256 = 0.8740234
  273.  
  274. ╔N THIS CASE M3 AND M4 ARE ZERO. ╙O:
  275.  
  276.    NUMBER ! EX M1 M2 M3 M4
  277.    -------+---------------
  278.    3580.0 ! 8C DF C0 00 00
  279.  
  280. ╞OR 'REAL' REALS THE TRANSFORMING
  281. PROCES IS THE SAME.
  282.  
  283. 123.456 = 
  284.   0.9645 27
  285.   0.9645 X 256 = 246.912 (246=$F6)
  286.   0.912  X 256 = 233.472 (233=$E9)
  287.   0.472  X 256 = 120.832 (120=$78)
  288.   0.832  X 256 = 212.992 (212=$D4)
  289.  
  290. ╫E STOP THE PROCES BECAUSE FOUR BYTES
  291. FOR THE MANTISSA ARE CALCULATED NOW.
  292. ╔N THESE CASES WE CAN HAVE A ROUNDING
  293. ERROR! ╬OW:
  294.  
  295.    NUMBER ! EX M1 M2 M3 M4
  296.    -------+---------------
  297.    123.456! 87 F6 E9 78 D4
  298.  
  299. ╞ROM THE ABOVE ALGORITHM WE FIND THAT
  300. THE GREATEST REAL COMPUTER NUMBER (IN
  301. 5 BYTE REPRESENTATION) EQUALS
  302.  
  303.    NUMBER ! EX M1 M2 M3 M4
  304.    -------+---------------
  305.      X    ! FF FF FF FF FF
  306.  
  307. ╘HE EXPONENT OF X EQUALS (DECIMAL):
  308.  
  309.    $FF-$80 = 255 - 128 = 127
  310.  
  311. ╙O X EQUALS (APPROX.)
  312.  
  313.    2127 = 0.170141183 X 1039
  314.  
  315. ╘HE ALGORITHM TAKES CARE, THAT THE
  316. FIRST SIGNIFICANT NUMBER IN THE
  317. BINARY REPRESENTATION EQUALS 1.
  318. ╘HEREFOR THE LEAST POSITIVE REAL
  319. NUMBER IS
  320.  
  321.    X = %0.10000000 X 2(-127)
  322.      = 2.938735880 X 10(-39)
  323.  
  324. OR
  325.  
  326.    NUMBER ! EX M1 M2 M3 M4
  327.    -------+---------------
  328.      X    ! 01 80 00 00 00
  329.  
  330. ╙O THE MANTISSA M1 FOR POSITIVE REAL
  331. NUMBERS IS ALLWAYS A NUMBER FROM THE
  332. INTERVAL $80 - $FF. ╫E MENTIONED
  333. ABOVE, THAT THE BIT OF THE MANTISSA
  334. OF A POSITIVE REAL NUMBER EQUALS 1.
  335.  
  336. ╘O STORE NEGATIVE NUMBERS WE ACT AS
  337. FOR POSTIVE NUMBERS. ┬UT BEFORE THAT
  338. WE CHANGE THE FIRST BIT INTO 0.
  339.  
  340. ╘RANSFORM -3.0.
  341.  
  342.    -3.0 = - (%11.0)
  343.         = 1 (%0.11000000 X 22)
  344.  
  345. ╘HE MANTISSA FOR -3 IS FOLLOWING THE
  346. ABOVE RULE
  347.  
  348.               0.0100 0000
  349.  
  350. ╙O
  351.  
  352.    NUMBER ! EX M1 M2 M3 M4
  353.    -------+---------------
  354.     -3.0  ! 82 40 00 00 00
  355.  
  356. ┴ SECOND 'NEGATIVE' EXAMPLE.
  357.  
  358.    -53.0 = -(%110101.0)
  359.          = -(%0.11010100 X 26)
  360.  
  361. ╘HE MANTISSA EQUALS
  362.  
  363.               0.01010100
  364.  
  365. SO
  366.  
  367.    NUMBER ! EX M1 M2 M3 M4
  368.    -------+---------------
  369.    -53.0  ! 86 54 00 00 00
  370.  
  371. ╫E SEE THAT WE CAN SUBSTRACT $80 FROM
  372. M1 TO CHANGE A 'POSITIVE'
  373. REPRESENTATION INTO A 'NEGATIVE' ONE.
  374.  
  375. 4. ├╧═┴╠ PROGRAMS
  376.  
  377. ╔N THIS PARAGRAPH ╔ SHALL GIVE SOME
  378. PROCEDURES FOR THE TRANSFORMATION
  379. PROCESSES DECRIBED ABOVE.
  380.  
  381.  // FOR ├┬═ VS 2.0
  382.  ╨╥╧├ INTEGER(NUMBER) ├╠╧╙┼─
  383.    ╔═╨╧╥╘ HEX$
  384.      ╔╞ NUMBER<-32768 ╧╥ NUMBER>32767
  385.      ╧╥ ╔╬╘(NUMBER)<>NUMBER ╘╚┼╬
  386.      ╨╥╔╬╘ "ERROR IN PARAMETER"
  387.      ╙╘╧╨ 
  388.    ┼╬─╔╞ 
  389.    ╔╞ NUMBER<0 ╘╚┼╬
  390.      NUMBER:=-NUMBER
  391.      NUMBER:=(NUMBER ┬╔╘╪╧╥ $FFFF)+1
  392.    ┼╬─╔╞ 
  393.    HI:=NUMBER ─╔╓ 256
  394.    LO:=NUMBER ═╧─ 256
  395.    ╨╥╔╬╘ HEX$(HI)+" "+HEX$(LO)
  396.  ┼╬─╨╥╧├ INTEGER
  397.  //
  398.  ╨╥╧├ REAL(NUMBER) ├╠╧╙┼─
  399.    ╔═╨╧╥╘ HEX$
  400.    ─╔═ M(0:4)
  401.    //  M(0)=EX, M(1)=M1, ESO.
  402.    NEG:=╞┴╠╙┼
  403.    ╔╞ NUMBER<0 ╘╚┼╬
  404.      NEG:=╘╥╒┼
  405.      NUMBER:=-NUMBER
  406.    ┼╬─╔╞ 
  407.    ╔╞ NUMBER=0 ╘╚┼╬
  408.      EXPON:=0
  409.    ┼╠╙┼ 
  410.      EXPON:=╔╬╘(╠╧╟(NUMBER)/╠╧╟(2))+1
  411.    ┼╬─╔╞ 
  412.    M(0):=EXPON+128
  413.    MANTDEC:=NUMBER/(2EXPON)
  414.    ╞╧╥ T#:=1 ╘╧ 4 ─╧
  415.      PROD:=MANTDEC*256
  416.      M(T#):=╔╬╘(PROD)
  417.      MANTDEC:=PROD-M(T#)
  418.    ┼╬─╞╧╥ T#
  419.    ╔╞ NEG ╘╚┼╬ M(1):=M(1)-128
  420.      ╞╧╥ T#:=0 ╘╧ 4 ─╧
  421.        ╨╥╔╬╘ HEX$(M(T#));
  422.      ┼╬─╞╧╥ T#
  423.    ╨╥╔╬╘ 
  424.  ┼╬─╨╥╧├ REAL
  425.  
  426.  ╞╒╬├ HEX$(N) ├╠╧╙┼─
  427.    ─╔═ H$ ╧╞ 16
  428.    H$:="0123456789ABCDEF"
  429.    NIBH:=N ─╔╓ 16
  430.    NIBL:=N ═╧─ 16
  431.    ╥┼╘╒╥╬ H$(NIBH+1)+H$(NIBL+1)
  432.  ┼╬─╞╒╬├ HEX$
  433.  
  434. 5. ╙OME REMARKS
  435.  
  436. 1. ╘HE ┬╔╘╪╧╥ OPERATION WITH $FFFF
  437. FLIPS ALL 0'S AND 1'S IN THE BINARY
  438. REPRESENTATION OF THE INTEGER NUMBER.
  439.  
  440. 2. ═ANTISSA M4 CAN DIFFER FROM THE
  441. REAL VALUE CAUSED BY ROUNDING ERRORS
  442. IN THE CALCULATION.
  443.  
  444. 3. ┴ REAL NUMBER WITH 5 BYTE
  445. REPRESENTATION
  446.  
  447.    00 00 00 00 00
  448.  
  449. IS ACCEPTED BY ├╧═┴╠, AND EQUALS 0.
  450.  
  451. 4. ├╧═┴╠ STORES ITS INTEGERS IN HI-LO
  452. BYTE ORDER. ╘HIS DIFFERS FROM THE
  453. USUAL STRORAGE, WHICH IS IN LO
  454. BYTE-HIGH BYTE ORDER.
  455.  
  456. 5. ╙EE ALSO 
  457.    ╩ESSE ╦NIGHT, ├╧═┴╠ 2.0 ╨ACKAGES,
  458.                  PAGES 11-13.
  459.